<?php

class AdminController extends Zend_Controller_Action {

    public function init()
    {
    	$this->_helper->layout->setLayout('layoutadmin');
    }
    
    public function loginAction() {
        
        $form = new Application_Form_Login();
      
        if($this->getRequest()->isXmlHttpRequest())
        {
        	$this->_helper->layout()->disableLayout();
        	$this->_helper->viewRenderer->setNoRender(true);
        	$data =$this->getRequest()->getPost();
        	$json = $form->processAjax($data);
        		if($json === "true")
        		{
        			$v = $form->getValues();
        			$login = $v['login'];
        			$password = $v['password'];
        				
        			$param = array('login' => $login);
        				
        			$user = new Application_Model_user();
        			if($user->authenticate($login,$password) == false)
        			{
        				$json = array("erreurauthentification" => "Association login / mot de passe invalide");
        				$json = array("password" => $json);
        				$json = Zend_Json::encode($json);
        			}
        		}
        		else 
        		{
        			
        		}
        	$this->_helper->json($json);
          }
          $this->view->form = $form;
    }
    
	   														 /*************** Actualité  ***************/
															 
    public function actualiteAction()
    {
    	$auth = Zend_Auth::getInstance();
    	if ($auth->hasIdentity())
    	{
    		$postform = new Application_Form_Post();
    		$this->view->postform = $postform;
    	}
    	else
    	{
    		$this->_redirect("/admin/login");
    	}
    }
	
	public function getpostsAction()
    {
    	$posts = new Application_Model_Post();
    	$posts = $posts->fetchAlldataOrderById();
    	
    	$i = 0;
    	foreach($posts as $post)
    	{
    		$data[$i] = array(
    				"id"=> $post['POST_ID'],
    				"titre"=> $post['POST_TITRE'],
    				"description"=> $post['POST_DESCRIPTION'],
    				"date"=> $post['POST_DATE'],
					"photo"=> $post['POST_PHOTO'],
					"langueid" => $post['LANGUE_ID'],
					"langue"=> $post['LANGUE_LIBELLE']
    		);
    		$i++;
    	}
    	$data = array("aaData" => $data);
    	if($this->getRequest()->isXmlHttpRequest())
    	{
    		$this->_helper->layout()->disableLayout();
    		$this->_helper->viewRenderer->setNoRender(true);
    		$this->_helper->json($data);
    	}
    }
    
    
    public function managepostAction()
    {
    	$auth = Zend_Auth::getInstance();
    	if ($auth->hasIdentity())
    	{
    		$form = new Application_Form_Post();
    		if($this->getRequest()->isXmlHttpRequest())
    		{
    			$this->_helper->layout()->disableLayout();
    			$this->_helper->viewRenderer->setNoRender(true);
    			$data =$this->getRequest()->getPost();
    			$json = $form->processAjax($data);
    			if($json === "true")
    			{
    				$v = $form->getValues();
    				$actionpost = $v['actionpost'];
    				$titrepost = $v['titrepost'];
    				$descriptionpost = $v['descriptionpost'];
    				$date = new Zend_Date();
    				$date = $date->toString("yyyy-MM-dd");
					$photo = $v['photo'];
					$langue = $v['langue'];
    				
    				$params = array(
    						'user' => $auth->getIdentity()->USER_ID,
    						'titre' => $titrepost,
    						'description' => $descriptionpost,
    						'date' => $date,
							'photo' => $photo,
							'langue' => $langue);
    				
    				$post = new Application_Model_Post();
    				//Ajout
    				if ($actionpost == 'add') {
    					$post->addPost($params);
    				}
    				//Modification
    				else if ($actionpost == 'edit') {
    					$idpost = $v['idpost'];
    					$post->editPost($idpost, $params);
    				}
    				//Suppression
    				else if ($actionpost == 'delete') {
    					$idpost = $v['idpost'];
    					$post->deletePost($idpost);
    				}
    			}
    		$this->_helper->json($json);
	    	}
	    }	
	    else
		{
			$this->_redirect("/admin/login");
		}
    }
	
	   														 /*************** Article  ***************/
    
    public function articleAction() {
    $auth = Zend_Auth::getInstance();
    	if ($auth->hasIdentity())
    	{
    		$articleform = new Application_Form_Article();
    		$this->view->articleform = $articleform;
    		
    		$couleurform = new Application_Form_Couleur();
    		$this->view->couleurform = $couleurform;
    	}
    	else
    	{
    		$this->_redirect("/admin/login");
    	}
    }
    
    public function getarticlesAction()
    {
    	$articles = new Application_Model_Article();
    	$articles = $articles->fetchAlldata();
    	
    	$i = 0;
    	foreach($articles as $article)
    	{
    		$data[$i] = array(
    				"id"=> $article['ARTICLE_ID'],
    				"categorieid"=>	 $article['CATEGORIE_ID'],
    				"nom"=> $article['ARTICLE_NOM'],
    				"description"=> $article['ARTICLE_DESCRIPTION'],
    				"prix"=> $article['ARTICLE_PRIX'],
    				"categorie"=> $article['CATEGORIE_LIBELLE'],
    				"photo"=> $article['ARTICLE_PHOTO'],
    				"statut" =>$article['CATEGORIE_STATUT']
    		);
    		$i++;
    	}
    	$data = array("aaData" => $data);
    	if($this->getRequest()->isXmlHttpRequest())
    	{
    		$this->_helper->layout()->disableLayout();
    		$this->_helper->viewRenderer->setNoRender(true);
    		$this->_helper->json($data);
    	}
    }
    
    public function couleursAction()
    {
    	$idarticle = $this->getRequest()->getParam("idarticle");
    	$couleurs = new Application_Model_Couleur();
    	$couleurs = $couleurs->fetchByArticle($idarticle);
    	 
    	if($this->getRequest()->isXmlHttpRequest())
    	{
    		$this->_helper->layout()->disableLayout();
    		$this->view->couleurs = $couleurs;
    	}
    }
    
    public function managearticleAction()
    {
    	$auth = Zend_Auth::getInstance ();
    	if ($auth->hasIdentity ()) {
    		$form = new Application_Form_Article ();
    		$this->_helper->layout ()->disableLayout ();
    		$this->_helper->viewRenderer->setNoRender ( true );
    		if ($this->getRequest ()->isXmlHttpRequest ()) {
    			$data = $this->getRequest ()->getPost ();
    			$json = $form->processAjax ( $data );
    			if ($json === "true") {
    				
    				$v = $form->getValues ();
    				$actionarticle = $v ['actionarticle'];
    				$categorie = $v ['categoriearticle'];
    				$nom = $v ['nomarticle'];
    				$description = $v ['descriptionarticle'];
    				$prix = $v ['prixarticle'];
    				
    				//Article
    				$article = new Application_Model_Article ();
    				$paramsarticle = array (
    						'categorie' => $categorie,
    						'nom' => $nom,
    						'description' => $description,
    						'prix' => str_replace ( ',', '.', $prix )
    						);
    				
    				// Ajout
    				if ($actionarticle == 'add') {
						
						$photo = $v['photo'];
						$couleur = $v['couleurarticle'];
						
						$paramcouleur = array(
								'couleurvaleur' => $couleur
							);
							
						//Couleur (Le Test de l'existence de la couleur ou non se fait dans le addCouleur)
						$couleurmodel = new Application_Model_Couleur();
						$couleurrow = $couleurmodel->addCouleur($paramcouleur);
						
						$idcouleur = $couleurrow['COULEUR_ID'];
					
						//On ajoute l'article
    					$idarticle = $article->addArticle ($paramsarticle);
    					
    					//On ajoute la liaison entre l'article et la couleur
    					$paramsacommecouleur = array(
    							'article' => $idarticle,
    							'photo'  => $photo,
    							'couleur' => $idcouleur
    					);
    					$acommecouleur = new Application_Model_ACommeCouleur();
    					$acommecouleur->addACommeCouleur($paramsacommecouleur);
    				} 					
    				// Modification
    				else if ($actionarticle == 'edit') {
    					$idarticle = $v ['idarticle'];
    					$article->editArticle ($idarticle, $paramsarticle);
    				} 
					//Suppression
    				else if ($actionarticle == 'delete') {
						//On Récupère l'id de l'aritcle
    					$idarticle = $v ['idarticle'];
    					
    					//On supprime toutes les photo et les liaisons
						$acommecouleur = new Application_Model_ACommeCouleur();
    					$liaisons = $acommecouleur->fetchByArticle($idarticle);
						
						foreach($liaisons as $liaison)
						{
							$acommecouleur->deleteACommeCouleur($liaison['ARTICLE_ID'], $liaison['COULEUR_ID']);
						}
    					
						//On supprime l'article
    					$article->deleteArticle ($idarticle);
    				}
    			}
    			$this->_helper->json ( $json );
    		}
    	} else {
    		$this->_redirect ( "/admin/login" );
    	}
    }
    
    public function managecouleurarticleAction()
    {
    	$auth = Zend_Auth::getInstance ();
    	if ($auth->hasIdentity ()) {
    		$form = new Application_Form_Couleur ();
    		$this->_helper->layout ()->disableLayout ();
    		$this->_helper->viewRenderer->setNoRender ( true );
    		if ($this->getRequest ()->isXmlHttpRequest ()) {
    			$data = $this->getRequest ()->getPost ();
    			$json = $form->processAjax ( $data );
    			if ($json === "true") {
    				$v = $form->getValues ();
    				$idarticle = $v ['idarticlecouleur'];
    				$actioncouleur =  $v['actioncouleur'];
    				$couleur = $v['couleur'];
    				$photo = $v['photocouleur'];
    				
    				$acommecouleur = new Application_Model_ACommeCouleur();
					
    				$paramcouleur = array(
								'couleurvaleur' => $couleur
							);
					
    				//AJout 
    				if ($actioncouleur == 'add') {
    					
    					//Couleur (Le Test de l'existence de la couleur ou non se fait dans le addCouleur)
						$couleurmodel = new Application_Model_Couleur();
						$couleurrow = $couleurmodel->addCouleur($paramcouleur);
						
						$idcouleur = $couleurrow['COULEUR_ID'];
						
    					$paramsacommecouleur = array (
    						'article' => $idarticle,
    						'couleur' => $idcouleur,
    						'photo' => $photo
    					);
    					$acommecouleur->addACommeCouleur($paramsacommecouleur);
    				}
					
					//Edit 
    				else if ($actioncouleur == 'edit') {
						$idcouleur = $v ['idcouleur'];
						
						//On recupere la couleur lié a l'id 
						$couleurmodel = new Application_Model_Couleur();
						$couleurexistante = $couleurmodel->fetchByID($idcouleur);
						
						//Si la couleur n'a pas etait modifié on update juste la photo
						if($couleurexistante['COULEUR_VALEUR'] == $couleur)
						{
							$paramsacommecouleur = array (
								'photo' => $photo
							);
							$acommecouleur->editACommeCouleur($idarticle,$idcouleur,$paramsacommecouleur);
						}
						//Sinon 
						else
						{
							//On supprime la liaison
							$liaison = $acommecouleur->fetchByCouleurAndArticle($idarticle, $idcouleur);
							
							$paramcouleur = array(
										'couleurvaleur' => $couleur
							);
							//On ajoute la couleur si elle n'existe pas sinon on recupère l'existante
							$couleurrow = $couleurmodel->addCouleur($paramcouleur);
								
							//Cas d'une nouvelle photo, on supprime la liaison et la photo
							if($photo != $liaison['ARTICLE_PHOTO'])
							{
								$acommecouleur->deleteACommeCouleur($idarticle, $idcouleur);
							}
							//Sinon on se contente de renommer la photo et de supprimer la lisaion
							else
							{
								$acommecouleur->deleteACommeCouleurSansPhoto($idarticle, $idcouleur);
								//On renomme le fichier de la photo si il existe
								if(file_exists(PUBLIC_PATH.'/'.$photo)) {
									$newphoto = explode($couleurexistante['COULEUR_VALEUR'],$photo);
									$newphoto = $newphoto[0].$couleurrow['COULEUR_VALEUR'].$newphoto[1];
									rename(PUBLIC_PATH.'/'.$photo, PUBLIC_PATH.'/'.$newphoto);
									$photo = $newphoto;
								}
							}
							
							$paramsacommecouleur = array (
									'article' => $idarticle,
									'couleur' => $couleurrow['COULEUR_ID'],
									'photo' => $photo
								);
							//On ajoute la liaison
							$acommecouleur->addACommeCouleur($paramsacommecouleur);
						}
					}
					else if ($actioncouleur == 'delete') {
						$idcouleur = $v['idcouleur'];
						$acommecouleur->deleteACommeCouleur($idarticle, $idcouleur);
					}
    			}
    			$this->_helper->json ( $json );
    		}
    	} else {
    		$this->_redirect ( "/admin/login" );
    	}
    }
    
    
    public function getphotoAction()
    {
    	if($this->getRequest()->isXmlHttpRequest())
    	{
    		$this->_helper->layout()->disableLayout();
    		$this->_helper->viewRenderer->setNoRender(true);
    		$idarticle = $this->getRequest()->getParam("idarticle");
    		$idcouleur = $this->getRequest()->getParam("idcouleur");
    		
    		$acommecouleur = new Application_Model_ACommeCouleur();
    		$acommecouleur = $acommecouleur->fetchByCouleurAndArticle($idarticle, $idcouleur);
    		
    		$data = array(
    				"photo"=> $acommecouleur['ARTICLE_PHOTO']
    		);
    
    		$this->_helper->json($data);
    	}
    }
    
   														 /*************** Categorie  ***************/
    
    public function categorieAction() {
    	$auth = Zend_Auth::getInstance();
    	if ($auth->hasIdentity())
    	{
    		$categorieform = new Application_Form_Categorie();
    		$this->view->categorieform = $categorieform;
    	}
    	else
    	{
    		$this->_redirect("/admin/login");
    	}
    }
    
    public function getcategoriesAction()
    {
    	$categories = new Application_Model_Categorie();
    	$categories = $categories->fetchAlldata();
    
    	$i = 0;
    	foreach($categories as $categorie)
    	{
    		$data[$i] = array(
    				"id"=> $categorie['CATEGORIE_ID'],
    				"categorie"=> $categorie['CATEGORIE_LIBELLE'],
    				"image" => $categorie['CATEGORIE_IMAGE']
    		);
    		$i++;
    	}
    	$data = array("aaData" => $data);
    	if($this->getRequest()->isXmlHttpRequest())
    	{
    		$this->_helper->layout()->disableLayout();
    		$this->_helper->viewRenderer->setNoRender(true);
    		$this->_helper->json($data);
    	}
    }
    
    public function managecategorieAction()
    {
		$auth = Zend_Auth::getInstance ();
		if ($auth->hasIdentity ()) {
			$form = new Application_Form_Categorie();
			$this->_helper->layout ()->disableLayout ();
			$this->_helper->viewRenderer->setNoRender ( true );
			if ($this->getRequest ()->isXmlHttpRequest ()) {
				$data = $this->getRequest ()->getPost ();
				$json = $form->processAjax ( $data );
				if ($json === "true") {
					$v = $form->getValues ();
					$actioncategorie = $v['actioncategorie'];
					$categorienom = $v['nomcategorie'];
					$categoriephoto = $v['photo'];
					
					$categorie = new Application_Model_Categorie();

					$params = array (
									'categorie' => $categorienom,
    								'photo' => $categoriephoto, 
									);
					
					// Ajout
					if ($actioncategorie == 'add') {
						$categorie->addCategorie ($params);
					} 					
					// Modification
					else if ($actioncategorie == 'edit') {
						$idcategorie = $v ['idcategorie'];
						$categorie->editCategorie ($idcategorie, $params);
					}
					//Suppression 
					else if ($actioncategorie == 'delete') {
						$idcategorie = $v ['idcategorie'];
						$categorie->deleteCategorie ($idcategorie);
					}
				}
				$this->_helper->json ( $json );
			}
		} else {
			$this->_redirect ( "/admin/login" );
		}
    }
	
    public function uploadAction()
    {
    	$this->_helper->layout()->disableLayout();
    	$this->_helper->viewRenderer->setNoRender(true);
    	if (!empty($_FILES)) {
    		
    		//On récupère le fichier temporaire
    		$tempFile = $_FILES['Filedata']['tmp_name'];
    			
    		$filename = $_POST['titrephoto'];
    	
    		//On recuperer le chemin complet
    		$targetFile =  str_replace('//','/',PUBLIC_PATH) .'/'.$filename;
    		
    		require_once APPLICATION_PATH . '/../library/PhpThumb/ThumbLib.inc.php';
    		$thumb = PhpThumbFactory::create($tempFile);
    
    		//On redimensionne l'image
    		//$thumb->resize(800, 600);
    
    		//On l'enregistre
    		$thumb->save($targetFile);
    	}
    }
}
?>